<?php
class TestElementoKakoon extends TestPojos
{
    public function testInstancia()
    {
        $this->assert(($this->crea(null, null, null) instanceof ElementoKakoon), "1. instancia");
    }

    public function testCrea()
    {
        $instancia      = $this->crea(1, "el sector", "la naturaleza");
        $identificador  = $instancia->consolida();
        $control1       = ($identificador > 0);

        $instancia  = null;
        $instancia  = $this->recupera($identificador);
        $control2   = ("el sector" == $instancia->getPropiedad("sector")); 
        $control3   = ($instancia->getPropiedad(ContenidoKakoon::CLAVE_PRIMARIA) == 1); 
        $control4   = ("la naturaleza" == $instancia->getPropiedad("naturaleza")); 
        
        $instancia  = null;
        $instancia  = $this->crea(1, "el sector", "la naturaleza");
        $control5   = Soporte::cadenaVacia($instancia->consolida());

        $instancia  = null;
        $instancia  = $this->recupera($identificador);
        $instancia->purga();
        $instancia = null;
        
        $this->assert($control1, "1. crea");
        $this->assert($control2, "2. crea");
        $this->assert($control3, "3. crea");
        $this->assert($control4, "4. crea");
        $this->assert($control5, "5. crea");
    }

    public function testRegistraValor()
    {
        $instancia = $this->crea(1, "el sector", ConstantesKakoon::ELEMENTO_LITERAL);
        $instancia->registraValor ("el valor literal");
        
        $identificador  = $instancia->consolida();
        $control1       = ($identificador > 0);

        $instancia  = null;
        $instancia  = $this->recupera($identificador);
        $control2   = ("el sector" == $instancia->getPropiedad("sector")); 
        $control3   = ($instancia->getPropiedad(ContenidoKakoon::CLAVE_PRIMARIA) == 1); 
        $control4   = (ConstantesKakoon::ELEMENTO_LITERAL == $instancia->getPropiedad("naturaleza")); 
        $control5   = ("el valor literal" == $instancia->getPropiedad("literal")); 
        $control6   = ("el valor literal" == $instancia->recuperaValor()); 
        
        $instancia->setPropiedad("naturaleza", ConstantesKakoon::ELEMENTO_HTML);
        $instancia->registraValor ("el valor literal");
        $instancia->consolida();
                
        $instancia  = null;
        $instancia  = $this->recupera($identificador);
        $control7   = (ConstantesKakoon::ELEMENTO_HTML == $instancia->getPropiedad("naturaleza")); 
        $control8   = ("el valor literal" == $instancia->getPropiedad("html")); 
        $control9   = ("el valor literal" == $instancia->recuperaValor()); 
        $control10  = (Soporte::cadenaVacia($instancia->getPropiedad("literal"))); 
        
        $instancia->purga();
        
        $this->assert($control1,  "1. registraValor");
        $this->assert($control2,  "2. registraValor");
        $this->assert($control3,  "3. registraValor");
        $this->assert($control4,  "4. registraValor");
        $this->assert($control5,  "5. registraValor");
        $this->assert($control6,  "6. registraValor");
        $this->assert($control7,  "7. registraValor");
        $this->assert($control8,  "8. registraValor");
        $this->assert($control9,  "9. registraValor");
        $this->assert($control10, "10. registraValor");
    }
    
    public function setUp()
    {
        $accesoBD   = new AccesoBD($GLOBALS["ACCESOBD_DATOS"]);
        $instancia  = new ElementoKakoon($accesoBD);

        $instancia->borraTabla();
        $instancia->creaTabla();
    }

    private function crea ($contenido, $sector, $naturaleza)
    {
        $retorno = new ElementoKakoon($this->accesoBD);

        $retorno->setPropiedad(ContenidoKakoon::CLAVE_PRIMARIA, $contenido);
        $retorno->setPropiedad("sector",                        $sector);
        $retorno->setPropiedad("naturaleza",                    $naturaleza);
    
        return $retorno;
    }

    private function recupera ($identificador)
    {
        return new ElementoKakoon($this->accesoBD, $identificador);
    }
}
?>